package cn.itcast.myapplication.db;


import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;

import java.util.List;

 /**
  *
  * 注解说明：
  *
  * @Dao：标注数据库操作的类。
  * @Query：包含所有Sqlite语句操作。其中带参数的查询可参考getUserById方法。
  * @Insert：标注数据库的插入操作。
  * @Delete：标注数据库的删除操作。
  * @Update：标注数据库的更新操作。
  *
  *  数据访问对象 (DAO) 定义了一个名为 UserDao 的 DAO。UserDao 提供了应用的其余部分用于与 user 表中的数据交互的方法。
  *
  * */

@Dao
public interface UserDao {

    @Query("SELECT * FROM USER")
    List<UserModel> getAllUsers();//查询所有的用户

    @Query("SELECT * FROM USER WHERE USER_ID = :id")
    UserModel getUserById(int id);//根据ID查询用

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insertUser(UserModel userModel);//添加用户

    @Query("UPDATE USER SET NAME = :name AND PHONE = :phone WHERE USER_ID = :id")
    void updateUser(int id, String name, String phone);//更新用户

    @Update(onConflict =  OnConflictStrategy.REPLACE)
    void updateUsers(UserModel... users);//更新很多用户

    @Query("DELETE FROM USER WHERE USER_ID = :id")
    void deleteUserById(int id);//根据ID删除用户

    @Delete
    void deleteUsers(UserModel... users);//删除用户

    }


